Skip to content

docs: correct the "Act 1 idles beneath Act 2" premise; record the launch runway#757

Merged
stphung merged 1 commit into
mainfrom
fix/act2-premise-and-checklist
Jul 15, 2026
Merged

docs: correct the "Act 1 idles beneath Act 2" premise; record the launch runway#757
stphung merged 1 commit into
mainfrom
fix/act2-premise-and-checklist

Conversation

@stphung

@stphung stphung commented Jul 15, 2026

Copy link
Copy Markdown
Owner

Summary

Three docs claimed Act 1 keeps running during Act 2. It does not — and that error was load-bearing: it is the sole justification for a Phase 2 item in #734.

src/main.rs:555 takes the voyage branch on vessel_launched && act2_enabled(), main.rs:1018 continues, and both game_tick_with_context call sites sit at :1253/:1608after it. Act 1 is frozen, not idling: no zones tick, no PR accrues, no Haven builds. And because vessel_launched is only ever set true (never unset), it is permanent for that character. Confirmed intended design.

How it propagated

The main.rs comment is patient zero: "Act 1 systems idle untouched beneath it" — sitting four lines above the continue that disproves it. "Idles untouched" reads as keeps running; it means frozen. From there:

  • docs/dossiers/act2-pilgrimage.md:306 repeated it verbatim
  • docs/explorations/2026-07-05-act2-systems-braiding.md:85-92 built on it: a player's Act 1 output is "stranded — nowhere left to go"
  • → that "stranded output" framing is the entire justification for Phase 2 item 6, "Act 1 bridges" (Act 2 release checklist #734), which the issue billed as the cheapest, most charming reuse

There is no stranded output to redirect, so nothing in that item is reuse: "fishing off the stern" is a new minigame, "Power Cores → Salvage" has no live source, "challenges as threat resolution" needs the challenge stack reachable from a screen that owns the whole frame. #734 has been updated to strike the item pending re-argument on its own merits.

Changes

File What
src/main.rs State the actual control flow, plus an explicit note against reintroducing the phrasing. Dropped the trailing "spec 6 owns their eventual wind-down" clause — it only parsed as part of the false premise (there is no wind-down of systems that never run).
docs/dossiers/act2-pilgrimage.md Interrelations diagram + the "During" bullet, corrected in place (living doc, per docs/README.md)
docs/explorations/…-braiding.md Correction block prepended; the wrong paragraph preserved verbatim. It is the record of how the item came to be proposed — an erratum is more honest than a silent rewrite.
docs/decisions.md New entry: the 250k PR launch runway as arithmetic

The runway entry, and why it exists

The 250,000 PR gate was briefly mistaken for an unmeasured release risk. It is closed-form:

  • wr_to_pr_per_hour(wr) = wr × (1 + wr/100) (src/loom/logic.rs:811), documented peak 131 WR/hr → 302 PR/hr
  • The grant (src/core/tick_stages.rs:1235-1248) adds elapsed / fill_secs PR where elapsed = (now - last).min(604_800)wall-clock, capped at 7 days
  • 250,000 ÷ 302 ≈ 828h ≈ **34.5 calendar days** ≈ **5 weekly check-ins**, accruing with the game closed

No RNG anywhere in that path — a pure function plus integer division on wall clock. Nothing is emergent, so simulation reveals nothing division doesn't. Worth recording because the headless simulator structurally cannot answer it: src/bin/simulator/strategy.rs:361-363 notes the Loom's wall-clock sustain "doesn't advance meaningfully in the headless simulator" and injects pattern completions instead. Two 3,000-hour runs from P50,000 and P250,000 on different seeds returned pr_earned of 17,995 and 17,994 — identical, because that PR came from injected challenge wins at ~6 PR/hr, not the Loom. The simulator isn't broken; it answers a different question.

The entry therefore also scopes balance-sim: it validates Act 1 → Z50 / Ascension X (the 28-pattern + Asc X prerequisites), and should not be read as evidence about Act 2's entrance.

The live question this exposed

Recorded in both the exploration doc and #734, unanswered: is it right that the hero a player built over hundreds of hours goes inert for a 3–7 month era? That is a bigger design question than any Phase 2 bullet, and the old phrasing hid it.

Verification

  • make checkexit 0, all CI checks passed (fmt, clippy -D warnings, full test suite, progression check, security audit)
  • No behavior change. One comment + three docs; zero production logic touched.

🤖 Generated with Claude Code

…nch runway

Three docs claimed Act 1 keeps running during Act 2. It does not.
`main.rs:555` takes the voyage branch and `main.rs:1018` continues, while
both `game_tick_with_context` call sites sit at `:1253`/`:1608` — after it.
Act 1 is frozen, and permanently (`vessel_launched` is never unset).

The `main.rs` comment's "Act 1 systems idle untouched beneath it" is where
this started: "idles untouched" reads as "keeps running", four lines above
the `continue` that proves otherwise. It propagated into the dossier and
then into the Act 2 braiding exploration, whose "Act 1 output is stranded
with nowhere left to go" premise is the sole justification for the
"Act 1 bridges" Phase 2 item in #734. There is no stranded output, so that
item has no premise and must be re-argued as new content rather than reuse.

- src/main.rs: state the actual control flow, with a note against
  reintroducing the phrasing
- docs/dossiers/act2-pilgrimage.md: fix the interrelations diagram and the
  "During" bullet (living doc — corrected in place)
- docs/explorations/2026-07-05-act2-systems-braiding.md: prepend a
  correction block; the wrong paragraph is preserved verbatim as the record
  of how the item came to be proposed. Names the live question the
  exploration should have asked: is it right that the hero goes inert for a
  3-7 month era?
- docs/decisions.md: new entry recording the 250k PR runway as arithmetic
  (302 PR/hr peak -> ~828h ~= 34.5 calendar days ~= 5 weekly check-ins,
  per the 7-day grant cap), why no simulator can or should answer it (pure
  fn + integer division on wall clock, zero RNG), and the resulting scope
  limit on balance-sim

No behavior change. fmt + clippy -D warnings clean.

Co-Authored-By: Claude <noreply@anthropic.com>
@stphung stphung merged commit 304d015 into main Jul 15, 2026
9 checks passed
@stphung stphung deleted the fix/act2-premise-and-checklist branch July 15, 2026 07:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant